The present invention relates to a program analysis system and a program analysis method which efficiently analyze the source code of a computer program by static analysis, and make it easy to understand the source code contents including process contents and input/output specifications by providing the result of the analysis.
During the inspection of software development and maintenance, it is necessary to analyze the source code contents or, process contents and/or input/output specifications in order to review the source code of a computer program or to perform reverse-engineering.
One of the prior arts to analyze the source code is to actually perform the test execution of the program and the data processing by generating the execution module or using an interpreter (dynamic analysis).
One of other analysis techniques is the symbolic execution of the program, that is, the static analysis. Typically, the static analysis represents elements, such as variables in the program, as abstract symbols like the possibility of error value instead of actual attribute values. And the contents of the program processing is represented as combinations of the symbols.
Another technique for analyzing the source code of a program is to read and understand it step by step.
However, the existing techniques have drawbacks described below.
First, dynamic analysis cannot be applied when the program cannot be executed due to an error. Second, it is cumbersome to generate the execution module for each change of the program. Third, to perform the test execution of a part of the program, it is troublesome because special program modules like drivers and stubs are required. Fourth, the test execution needs test data, and it is difficult and complicated to generate test data conforming to conditions which perfectly matches the object of the analysis.
Fifth, the existing symbolic execution is able to abstractly analyze data transitions; however, it is difficult to understand the input/output specifications of the source code, especially in case that the executed contests varies according to the concrete input data.
Sixth, reading and understanding the source code step by step requires much labor, and the work quality depends largely on the skillfulness of the worker.
It is an object of the present invention to solve said drawbacks, more specifically, an object of the present invention is to provide a program analysis system and a program analysis method which efficiently analyze the source code of a computer program by static analysis, and make it easy to understand the source code contents including the process contents and input/output specifications by providing the result of the analysis. In addition, it is still another object of the present invention to provide an easy-to-use program analysis system and a program analysis method.